#include <iostream>
#include <string.h>
#include <math.h>
using namespace std;


int dfs(int x,int y,int r,int *a,int *dp){
	if(dp[y*r+x] != -1)
		return dp[y*r+x];
	if(y == r-1)
		return a[y*r+x];
	int ans=0;
	ans = max(dp[(y+1)*r+x]=dfs(x,y+1,r,a,dp),dp[(y+1)*r+x+1]=dfs(x+1,y+1,r,a,dp));
//	cout<<x<<" "<<y<<endl;
//	for(int i=0;i<r;i++){
//		for(int j=0;j<r;j++)
//			cout<<dp[i*r+j]<<" ";
//		cout<<endl;
//	}
//	cout<<endl;
	return ans+a[y*r+x];
}


int main(){
	int r;
	cin>>r;
	int a[r][r],dp[r][r];
	memset(dp,-1,sizeof(dp));
	memset(a,0,sizeof(a));
	for(int i=0;i<r;i++)
		for(int j=0;j<=i;j++)
			cin>>a[i][j];
	cout<<dfs(0,0,r,&a[0][0],&dp[0][0]);
//	for(int i=0;i<r;i++){
//		for(int j=0;j<r;j++)
//			cout<<dp[i][j]<<" ";
//		cout<<endl;
//	}
//	cout<<endl;
//	for(int i=0;i<r;i++){
//		for(int j=0;j<r;j++)
//			cout<<a[i][j]<<" ";
//		cout<<endl;
//	}
	return 0;
}
